//
//  LQStatusListViewModel.swift
//  Weibo
//
//  Created by ios on 16/8/12.
//  Copyright © 2016年 ios. All rights reserved.
//

import UIKit
//  获取微博数据的ViewModel , 对应的视图是首页的TableView

class LQStatusListViewModel: NSObject {

  //  微博数据源
  lazy var statusList: [LQStatusViewModel] = [LQStatusViewModel]()
  

//  加载微博数据
    func loadData(isPullup:Bool ,callBack: (isSuccess: Bool , message: String)->()) {
    //  下拉刷新返回比这个id大的微博数据
    var sinceId: Int64 = 0
    //  上拉加载返回比这个id小或者等于的微博数据
    var maxId: Int64 = 0
    //判断是上拉加载 还是下拉刷新
    if isPullup{
           //  获取微博数组里面的做后一个微博id
        maxId = statusList.last?.status?.id ?? 0
        if maxId > 0 {
         //取消重复的数字
            maxId -= 1
        }
    }else{
           //  获取微博数组里面的第一个微博id
        sinceId = statusList.first?.status?.id ?? 0
        }
    
        var result = "没有加载到最新的微博数据"
    LQAFNetworkingTools.sharedTools.reqeustStatuses(sinceId, max_id: maxId,accessToken: LQUserAccountViewModel.shareUserAccount.accessToken!) { (response, error) -> () in
        if error != nil {
            print("网络请求异常,\(error)")
            callBack(isSuccess: false , message:result)
            return
        }
        //  代码执行到此,表示网络请求成功
        guard let dic = response as? [String: AnyObject] else {
            print("字典格式不正确")
            callBack(isSuccess: false , message:result)
            return
        }
        //  字典格式正确
        guard let dicArray = dic["statuses"] as? [[String: AnyObject]] else {
            print("字典格式不正确")
            callBack(isSuccess: false , message:result)
            return
        }
        var tempArray = [LQStatusViewModel]()
        for value in dicArray {
            
            //  字典转模型
            let status = LQStatuses(dic: value)
            
            //  viewModel
            let statusViewModel = LQStatusViewModel(status: status)
            
            tempArray.append(statusViewModel)
            
        }
        //  设置数据源
//        self.statusList = tempArray
        if isPullup{
            //上拉加载数据
           self.statusList.appendContentsOf(tempArray)
        }else{
           //下拉刷新
          self.statusList.insertContentsOf( tempArray, at: 0)
        }
        
        if tempArray.count > 0 {
        
          result = "加载\(tempArray.count)条数据"
        }
        callBack(isSuccess: true , message:result)
        
    }
    
}
}